<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Windows-1252" />
<title>P/Invoke Interop Assistant - Overview</title>

<style type="text/css">
	body {background: white; color: black}
	h1 {font: 14pt Arial bold}
	p {font: 10pt Arial}
</style>
</head>

<body>
<h1>P/Invoke Interop Assistant - Overview</h1>
<p>
Tricky marshaling rules make Interop an advanced feature that many developers struggle with. This is especially true for Platform Invocation Services which, unlike COM Interop that uses Tlbimp, do not provide any automated way of generating managed proxy entry points based on some formal description of the unmanaged side. Developers end up declaring the entry points manually, often just trying to guess the signatures on a trial-and-error basis until their particular scenario seems to work. As often as not, this method of generating PInvoke signatures results in insidious bugs such as memory corruption or unexpected product behavior, that do not get caught until late into the product cycle, if at all.</p>
<p>
The P/Invoke Interop Assistant provides automatic generation of managed code from C headers
as well as the reverse generation of unmanaged signatures based on managed inputs. Users can
take advantage of the tools to easily generate Windows and custom managed entry points and
verify that the stack layout produced by the marshaler at runtime will really match what is
expected by the unmanaged side. The SigExp
    is also capable of providing
additional information such as memory allocation and marshaling details. 
</p>
<p>
The Assistant is supported on Windows XP SP2, Windows Vista and above. It comprises of two tools that complement each other:</p>
<p>
<a href="SigImp.htm">SigImp: Unmanaged to Managed Signature Converter</a><br />
<a href="SigExp.htm">SigExp: Managed to Unmanaged Signature Converter</a>
</p>
<p>
    If you have any suggestion about the tool, want to file bugs or give your comments,
    please send email to <a href="mailto:sigtool@microsoft.com">sigtool@microsoft.com</a>.
</p>
</body>
</html>
